﻿
using System.Web.Http.Controllers;

namespace Monitor.Models.Interfaces
{
    /// <summary>
    /// Интерфейс логгера
    /// </summary>
    public interface ILogger
    {
        /// <summary>
        /// Регистрирование в базе событий
        /// </summary>
        /// <param name="User">пользователь</param>
        /// <param name="controllerContext">контроллер</param>
        /// <param name="model">модель</param>
        void RegisterOperation(System.Security.Principal.IPrincipal User, HttpControllerContext controllerContext,
                               object model);


        /// <summary>
        /// Фатальная ошибка
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        void Fatal(object message);

        /// <summary>
        /// Ошибка в приложении
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        void Error(object message);

        /// <summary>
        /// Информация
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        void Info(object message);

        /// <summary>
        /// Сообщение тестирования
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        void Debug(object message);

        /// <summary>
        /// Фатальная ошибка в контролллере
        /// </summary>
        /// <param name="controllerContext">сам контроллер</param>
        /// <param name="exception">ошибка</param>
        void Fatal(HttpControllerContext controllerContext, System.Exception exception);

        /// <summary>
        /// Ошибка в контролллере
        /// </summary>
        /// <param name="controllerContext">сам контроллер</param>
        /// <param name="exception">ошибка</param>
        void Error(HttpControllerContext controllerContext, System.Exception exception);

        /// <summary>
        /// Информация из контролллера
        /// </summary>
        /// <param name="controllerContext">сам контроллер</param>
        /// <param name="exception">ошибка</param>
        void Info(HttpControllerContext controllerContext, System.Exception exception);

        /// <summary>
        /// Фатальная ошибка
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        /// <param name="exception">ошибка</param>
        void Fatal(object message, System.Exception exception);

        /// <summary>
        /// Ошибка
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        /// <param name="exception">ошибка</param>
        void Error(object message, System.Exception exception);

        /// <summary>
        /// Информация
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        /// <param name="exception">ошибка</param>
        void Info(object message, System.Exception exception);

        /// <summary>
        /// Информация тестировки
        /// </summary>
        /// <param name="message">объект-сообщение</param>
        /// <param name="exception">ошибка</param>
        void Debug(object message, System.Exception exception);
    }
}
